你知道跟鯨魚說謝謝他會回你什麼嗎? Yor're *Whalecome*
想不到開頭就來點冷笑話~
圖片來源:Docker (@Docker) / Twitter
根據上一篇使用 Docker 架設的方法,先來看看如果要搬到 Kubernetes 上有哪些不同吧!
上一篇的架設方法是以 Docker 單一主機 進行架設,那這一篇使用 Kubernetes 就要以 多主機合作 的方式
前面我們自己 Build Image 就可以直接拿到 Container 使用,但是在 Kubernetes 需要每一台主機都有這個 Image
從兩個觀點來看:
imagePullPolicy: IfNotPresent
or imagePullPolicy: Always
)imagePullPolicy: Never
)使用可以防止 Container 被刪掉後資料遺失,你可不想要生存了好幾天的心血就這樣付諸東流吧!
如果你有注意到前一篇的 Dockerfile,裡面有夾了一個 Volume 用來記錄資料,產生的檔案就會存放在 Docker 專屬的檔案目錄下,如下圖
圖片來源:Use volumes | Docker Documentation
那在 Kubernetes 呢?
Kubernetes 需要的是每一台主機都能連到共同的儲存空間
一般來說,如果要讓很多人共用資料夾可能會使用 Nas 或 雲端硬碟這種遠端的儲存空間
PersistentVolume 也提供了像是 nfs, iscsi 的遠端儲存方式,當然如果預期只在單一的 node 上使用還是能用 hostPath 掛本機的目錄
要如何把服務對外呢?
關於網路前面示範直接使用了本機的 ip 和 port (Host Network)
圖片來源:Day 30- 三周目 - Docker network 暨完賽回顧 - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天
其實 Docker 本身也提供了很多種網路架構,如 Host, Bridge, Overlay, IPvlan, MacVlan, ...
有興趣的人可以參考:Docker 網路簡介 | 小信豬的原始部落
在 Kubernetes 除了直接指定單一 Pod 的 ip (ExternalIP) 和指定對外 port (hostPort) 外,還有可以 Service, Ingress 的資源可以使用
因為 Service, Ingress 內容很多,之後會 Ingress 篇詳細說明
這裡先用最簡單的 hostPort 和 Service nodePort 來示意
hostPort
hostPort 會在部署到的 node 上開洞,範圍沒有限制,但要注意可能會與原本的服務衝突
nodePort
nodePort 會在 node 上開洞,port 範圍在 30000~32768
明天就來用 Kubernetes 架設吧!